package com.ruralflow.population.mapper;

import java.util.List;

import com.ruralflow.common.annotation.UserRoleLimiter;
import com.ruralflow.population.domain.Population;
import org.apache.ibatis.annotations.Param;

/**
 * 流动人口信息Mapper接口
 * 
 * @author ruralflow
 * @date 2025-02-15
 */
public interface PopulationMapper 
{
    /**
     * 查询流动人口信息
     * 
     * @param populationId 流动人口信息主键
     * @return 流动人口信息
     */
    public Population selectPopulationByPopulationId(Long populationId);

    /**
     * 查询流动人口信息列表
     * 
     * @param population 流动人口信息
     * @return 流动人口信息集合
     */
    @UserRoleLimiter
    public List<Population> selectPopulationList(Population population);

    /**
     * 新增流动人口信息
     * 
     * @param population 流动人口信息
     * @return 结果
     */
    public int insertPopulation(Population population);

    /**
     * 修改流动人口信息
     * 
     * @param population 流动人口信息
     * @return 结果
     */
    public int updatePopulation(Population population);

    /**
     * 删除流动人口信息
     * 
     * @param populationId 流动人口信息主键
     * @param updateBy 修改人
     * @return 结果
     */
    public int deletePopulationByPopulationId(@Param("populationId") Long populationId,
                                              @Param("updateBy") String updateBy);

    /**
     * 批量删除流动人口信息
     * 
     * @param populationIds 需要删除的数据主键集合
     * @param updateBy 修改人
     * @return 结果
     */
    public int deletePopulationByPopulationIds(@Param("populationIds") Long[] populationIds,
                                               @Param("updateBy") String updateBy);

    /**
     * 查询流动人口信息总数
     *
     * @return 结果
     */
    Integer selectCountPopulation();
}
